﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HS.Domain.EF;
using System.Data.Entity;

namespace HS.Business.Security
{
    public class SubcondicionBusiness
    {
        public Subcondicion CreateEntity()
        {
            return new Subcondicion()
            {
                MedioPago = new MedioPago(),
                ParametrosCondiciones = new List<ParametrosCondicion>(),
                ServiciosCondiciones = new List<ServiciosCondicion>(),
                TipoCondicion = new TipoCondicion(),
                VariablePromocional = new VariablePromocional(),
                RowStatus = true
            };
        }

        public Subcondicion GetEntityByPK(int? idSubcondicion, bool? rowStatus)
        {
            HomeSolutionsDBEntities context = new HomeSolutionsDBEntities();

            var dbset = context.Set<Subcondicion>();

            return dbset.Include(p => p.MedioPago)
                        .Include(p => p.ParametrosCondiciones)
                        .Include(p => p.ServiciosCondiciones)
                        .Include(p => p.TipoCondicion)
                        .Include(p => p.VariablePromocional)
                        .Where(p => p.IdSubcondicion == idSubcondicion
                           && (rowStatus != null ? p.RowStatus == rowStatus : p.RowStatus == true))
                        .FirstOrDefault();
        }

        public List<Subcondicion> GetEntities(int? idSubcondicion, bool? rowStatus)  //TODO: agregar filtros
        {
            HomeSolutionsDBEntities context = new HomeSolutionsDBEntities();

            var dbset = context.Set<Subcondicion>();

            return dbset.Include(p => p.MedioPago)
                        .Include(p => p.ParametrosCondiciones)
                        .Include(p => p.ServiciosCondiciones)
                        .Include(p => p.TipoCondicion)
                        .Include(p => p.VariablePromocional)
                        .Where(p => p.IdSubcondicion == idSubcondicion
                           && (rowStatus != null ? p.RowStatus == rowStatus : p.RowStatus == true))
                        .ToList();
        }

        public Subcondicion GetSubcondicionByCondicionPK(int? idCondicion, bool? rowStatus) {
            HomeSolutionsDBEntities context = new HomeSolutionsDBEntities();

            var dbset = context.Set<Subcondicion>();

            return dbset.Include(p => p.MedioPago)
                        .Include(p => p.ParametrosCondiciones)
                        .Include(p => p.ServiciosCondiciones)
                        .Include(p => p.TipoCondicion)
                        .Include(p => p.VariablePromocional)
                        .Where(p => p.IdCondicion == idCondicion
                           && (rowStatus != null ? p.RowStatus == rowStatus : p.RowStatus == true))
                        .FirstOrDefault();
        }
    }
}
